<?php 

namespace Zbsht\Controller;

use Think\Controller;

class CommentController extends Controller{
	protected $One = MODULE_NAME . CONTROLLER_NAME . ACTION_NAME;


	public function __construct(){
		parent::__construct();

		// 操作日志功能，写入日志 
		autoAddLog($_REQUEST);

		if (!session(C('USER_AUTH_KEY')) && !session('username')) {

			$this->error('您还未登陆！','/Zbsht/Login/index');
		}


		// // /**验证当前操作是否有权项*/  目前 屏蔽，不用这方法 。
		// if (!in_array($this->One , C('NOT_AUTH_ACCESS'))) {
		// 	if ( !$this->verIfyNode() ) {
		// 		$this->error('无操作权项，请联系管理员！','/Zbsht/index/index');
		// 	}
		// }


		// 菜单缓存
		if (!S('menu' . session(C('USER_AUTH_KEY')))) {
			/**
			 * 查询节点 和 权项
			 */
			$getRoleOrId = D('UserRelation')->where(['id'=>session(C('USER_AUTH_KEY'))])->relation(true)->find();// 获取当前用户有几个角色
			$getRoleOrId = getRoleOrId($getRoleOrId); // 获取用户角色ID
			$node = D('RoleRelation')->relation(true)->select(); // 获取所有的节点

			$access = M('access')->where(['role_id'=>['in' , $getRoleOrId]])->getField('node_id',true); // 获取角色所有节点ID
			S('access' . session(C('USER_AUTH_KEY')) , $access); // 缓存可用节点

			count($getRoleOrId) > 0 ? $getRoleOrId : $this->error('该用户无任何权项，请联系管理员！', U('Zbsht/Login/logout'));
			count($access) > 0 ? $access : $this->error('该用户无任何权项，请联系管理员！', U('Zbsht/Login/logout'));

			// 获取权项 重组菜单
			$this->menu = arrayTurnTwo($node , $access);


			S('menu' . session(C('USER_AUTH_KEY')) , $this->menu , 1);
		}else{

			$this->menu = S('menu' . session(C('USER_AUTH_KEY')));
		}


		// 判断访问的节点是否有权项
		foreach ($this->menu as $k => $v) {
			if (CONTROLLER_NAME == $v['name'] && $v['access'] == 0) {
				$this->error('无操作权项，请联系管理员' , '', 30000);
			}
			foreach ($v['child'] as $action) {
				if (ACTION_NAME == $action['name'] && $action['access'] == 0) {
					$this->error('无操作权项，请联系管理员' , '', 30000);
				}
			}
		}
	}


	/**验证当前操作是否有权项*/
	public function verIfyNode(){

		$data = M('node')->where(['name'=>ACTION_NAME])->find();

		if (in_array($data['id'] , S('access' . session(C('USER_AUTH_KEY'))) )) {
			return true;
		}else{
			return false;
		}
	}








}

















?>